/**
 * Copyright (c) 2017 ShopJsp. All Rights Reserved.
 * ============================================================================
 * 版权所有 2011 - 今 北京华宇盈通科技有限公司，并保留所有权利。
 * ----------------------------------------------------------------------------
 * 提示：在未取得SHOPJSP商业授权之前，您不能将本软件应用于商业用途，否则SHOPJSP将保留追究的权力。
 * ----------------------------------------------------------------------------
 * 官方网站：http://www.shopjsp.com
 * ============================================================================
 * @author 张丁方
 * @CreateTime 2017-3-29 15:22:28
 */
package com.hyyt.shopjsp.product.service;

import com.hyyt.shopjsp.product.pojo.ShopProductType;
import com.hyyt.shopjsp.product.vo.ShopProductTypeVo;
import com.hyyt.shopjsp.util.common.ResultMsg;

import java.util.List;
import java.util.Map;
import java.util.Collection;

/**
* shop_productType, SHOP_商品分类
*
* @author Robot 2017-03-29 15:22:28
*/
public interface IShopProductTypeService {

    /**
     * 保存或更新商品分类对象
     *
     * @param shopProductType SHOP_商品分类
     * @return 保存后的SHOP_商品分类
     */
    ResultMsg saveOrUpdateShopProductType (ShopProductType shopProductType);

    /**
     * 删除指定ID的SHOP_商品分类
     *
     * @param productTypeId SHOP_商品分类ID
     */
    ResultMsg deleteShopProductType(Integer productTypeId);

/**
* 删除指定ID集合的SHOP_商品分类
*
* @param ids SHOP_商品分类ID集合
*/
void deleteShopProductType(Collection<Integer> ids);

    /**
    * 根据ID加载一个SHOP_商品分类
    *
    * @param id SHOP_商品分类ID
    * @return SHOP_商品分类
    */
    ShopProductType loadShopProductType(Integer id);

    /**
     * 查询所有的SHOP_商品分类，主要用于分类树的自身维护
     */
    List<ShopProductType> getNodesForManager(Map<String, Object> params);

    /**
     * 查询所有的SHOP_商品分类，主要用于分类树的关联数据的查询
     */
    List<ShopProductType> getNodesForNavigate(Map<String, Object> params);

    /**
    * 查询SHOP_商品分类
    *
    * @param params 查询参数，为key-value形式
    * @return SHOP_商品分类集合
    */
    List<ShopProductType> queryShopProductType(Map<String, Object> params);

    /**
    * 查询SHOP_商品分类
    *
    * @param params   查询参数，没有则传null,分页参数key为“sortColumns”
    * @param startRow 起始行数（不含起始行的数据）
    * @param rowSize  要查询记录数
    * @return SHOP_商品分类集合
    */
    List<ShopProductType> queryShopProductType(Map<String, Object> params, int startRow, int rowSize);

    /**
     * 自定义查询SHOP_商品分类
     *
     * @param params   查询参数，没有则传null,分页参数key为“sortColumns”
     * @param startRow 起始行数（不含起始行的数据）
     * @param rowSize  要查询记录数
     * @return SHOP_商品分类集合
     */
    List<Map<String, Object>> queryShopProductTypeBySelf(Map<String, Object> params, int startRow, int rowSize);

    /**
     * 查询SHOP_商品分类 用虚拟类接收
     *
     * @param params   查询参数，没有则传null,分页参数key为“sortColumns”
     * @param startRow 起始行数（不含起始行的数据）
     * @param rowSize  要查询记录数
     * @return SHOP_商品分类集合
     */
    List<ShopProductTypeVo> queryShopProductTypeVo(Map<String, Object> params, int startRow, int rowSize);

    /**
    * 统计SHOP_商品分类
    *
    * @param params 查询参数，没有则传null,分页参数key为“sortColumns”
    * @return 结果集记录数
    */
    int countShopProductType(Map<String, Object> params);

    /**
     * 热销商品分类统计排行
     * @param params
     * @param startRow
     * @param rowSize
     * @return
     */
    List<ShopProductTypeVo> queryHotCategoryStatistics(Map<String, Object> params, int startRow, int rowSize);

    /**
     * 导出热销商品分类统计排行excel
     * @param params
     * @return
     */
    List<ShopProductTypeVo> queryHotCategoryStatistics(Map<String, Object> params);

    /**
     * 热销商品分类数量
     * @param params
     * @return
     */
    int countHotCategoryStatistics(Map<String, Object> params);

}